#ifndef _WORDFILTER_H_
#define _WORDFILTER_H_

#include <string>
#include <vector>

// ������Ŀ
enum EFilterMask
{
	EFM_None		= 0,
	EFM_Chat		= 0x0003,	// ����
	EFM_CreateRole	= 0x000C,	// ��������
	EFM_Naming		= 0x0030,	// ����
};

class WordFilter
{
public:
	WordFilter();
	~WordFilter();

	bool init();

	/*
	 *	�������
	 */
	bool checkName(const char* szName, EFilterMask mask, int32_t nLenMin, int32_t nLenMax);

	/*
	 *	�������
	 */
	bool checkPassword(const char* szName, int32_t nLenMin, int32_t nLenMax);

	/*
	 *	��������
	 */
	void filterDialog(std::string& strText, EFilterMask mask);

	/*
	 *	����ַ��Ƿ�Ϸ�
	 */
	bool isWordCharValid(const char* szName);

	/*
	 *	����ַ��Ƿ�����
	 */
	bool isWordAlphanumeric(const char* szName);

	/*
	 *	�Ƿ��ڹ��˴���
	 */
	bool isWordInFilter(const char* szName, EFilterMask mask);

private:
	std::vector<std::string> _filters;
	std::vector<uint16_t> _flags;
};

#define g_WordFilter Singleton<WordFilter>::Instance()

#endif
